package demo;

/**
 * 使用二维数组制作一个类似华容道的界面
 * <p>
 * Version: 1.0
 * Author: 瓶子
 */

public class TwoDimensionalArrayExercises {
    public static void main( String[] args ) {
        int[][] array = shuffleArray(generateArray(4, 4));
        getArray(array);

    }

    // 定义一个二维数组，传入二维数组行列生成数组

    /**
     * 生成二维数组
     * <p>
     * param rows 行;cols 列;
     * return array 二维数组
     * Version: 1.0
     * Author: 瓶子
     */
    public static int[][] generateArray( int rows, int cols ) {
        int[][] array = new int[rows][cols];
        for ( int i = 0; i < rows; i++ ) {
            for ( int j = 0; j < cols; j++ ) {
                array[i][j] = (i * cols) + j + 1;
            }
        }
        return array;
    }

    // 打印数组内容
    public static void getArray( int[][] arr ) {
        for ( int i = 0; i < arr.length; i++ ) {
            for ( int j = 0; j < arr[i].length; j++ ) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }

    // 打乱数组

    /**
     * 打乱数组
     * <p>
     * param int[][] array;
     * return int[][] array;
     * Version: 1.0
     * Author: 瓶子
     */
    public static int[][] shuffleArray( int[][] array ) {
        for ( int i = 0; i < array.length; i++ ) {
            for ( int j = 0; j < array[i].length; j++ ) {
                // 生成随机行列数
                int index = ( int ) (Math.random() * array.length);
                int index2 = ( int ) (Math.random() * array[i].length);
                // 随机交换
                int temp = array[i][j];
                array[i][j] = array[index][index2];
                array[index][index2] = temp;
            }
        }
        return array;
    }


}
